package Utils;

import io.restassured.response.Response;
import org.apache.log4j.Logger;

import static io.restassured.RestAssured.given;

/**
 * 请求类
 * Created by 80736 on 2017/7/1.
 */
public class Request {
    private static Logger logger = MyLogs.getLogger();

    public static Response get() {
        //todo get方法
        return null;

    }


    /**
     * post请求方法
     *
     * @param url
     * @param head
     * @param body
     * @return
     */
    public static Response post(String host, String url, String head, String body) {
        /*
        发送请求分为四种情况
        body为空
            一个header
            两个header
        body不为空
            一个header
            两个header
            分别针对四个情况进行判断
         */

        String[] headerResult = null;
        String[] headerResult1 = null;

        if (head.contains(",")) {
            String[] result = head.split(",", 2);
            String header1 = result[0];
            String header2 = result[1];
            headerResult = header1.split(":", 2);
            headerResult1 = header2.split(":", 2);
            //System.out.println(headerResult[0] + " " + headerResult[1]);
            //System.out.println(headerResult1[0] + " " + headerResult1[1]);
        } else {
            headerResult = head.split(":", 2);
        }

        //根据header数量和body是否为空，确定使用那种方式发送请求
        if (headerResult1 != null & body != null) { //两个header，有body情况
            return given()
                    .header(headerResult[0], headerResult[1])
                    .header(headerResult1[0], headerResult1[1])
                    .request().body(body)
                    .when().post(host + url);
        } else if (headerResult1 != null & body == null) {  //一个header，无body情况
            return given()
                    .header(headerResult[0], headerResult[1])
                    .header(headerResult1[0], headerResult1[1])
                    .request()
                    .when().post(host + url);
        } else if (body != null) {    //一个header，body不为空情况
            //assert headerResult != null;
            return given()
                    .header(headerResult[0], headerResult[1])
                    .request().body(body)
                    .when().post(host + url);
        } else if (body == null) {    //一个header，body为空情况
            return given()
                    .header(headerResult[0], headerResult[1])
                    .request()
                    .when().post(host + url);
        } else {
            System.out.println("post 参数错误请检查");
            logger.error("post 参数错误请检查");
            logger.error("host:" + host + "\nurl:" + url + "\nhead:" + head + "\nbody:" + body);
            return null;
        }

    }

    public static Response put() {
        //todo put方法
        return null;
    }
}
